重複的事情做多了就變成肌肉記憶,做到數不請就會變反射動作。
在認識了那麼多 Vue 的指令之後,ㄧ定會很想實際的動手做,我們就來做一個產品列表,並把我們之前所學的應用在這個產品列表的功能上。
我們還是使用以 CDN 載入 Vue 的方式來實作頁面,所以別忘了將 Vue.js 載入頁面。
這個實作的前半段和我們之前實作的 TodoList 很像,也趁這個機會複習一下。
在實作之前,同樣的我們先把要實作的功能一一列出來,接這把畫面刻出來,這裡為了示範就沒特別刻畫面請包涵~
<script>裡創建一個 Vue 的實例,把先將要用到的資料以陣列+物件的格式準備好,再去 HTML 把要綁定好的元素以 Vue 的v-指令綁定好。@click="addItem(id, name)"。v-for將資料遍歷出來,並渲染到頁面上先試著把在data裡的列表內容選染到頁面,如果這一步成功了,再進行下一步增加的部分。
增加方法的步驟有:
data:{}已先預備好空的資料格式,利用方法帶參數的方式取得資料的各屬性push()把拿到的資料放入 lists 中.prevent
id
id 找到 index? 找到對應的index就可用splice()的方法刪除先看看 codepen 的實作結果
再來看看程式碼
html 的部分
<h1>商品列表增加、刪除功能</h1>
<div id="app">
  <h3>增加商品</h3>
  <div>
    ID:<input type="text" v-model="id" /> | Name:<input
      type="text"
      v-model="name"
    /><input type="button" value="Add" @click="addItem" />
  </div>
  <table>
    <thead>
      <tr>
        <td>Id</td>
        <td>Name</td>
        <td>Time & Date</td>
        <td>Operation</td>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in lists" :key="item.id">
        <td>{{ item.id }}</td>
        <td v-text="item.name"></td>
        <td>{{ item.timeDate}}</td>
        <td><a href="" @click.prevent="deleteItem(item.id)">Delete</a></td>
      </tr>
    </tbody>
  </table>
</div>
Vue.js 的部分
const vm = new Vue({
  el: '#app',
  data: {
    id: '',
    name: '',
    keywords: '',
    lists: [
      {
        id: 1,
        name: 'Book',
        timeData: new Date(),
      },
      {
        id: 2,
        name: 'Ipad',
        timeData: new Date(),
      },
      {
        id: 3,
        name: 'Smart phone',
        timeData: new Date(),
      },
    ],
  },
  methods: {
    addItem: function () {
      var item = { id: this.id, name: this.name, timeDate: new Date() };
      console.log(item);
      this.lists.push(item);
      this.id = '';
      this.name = '';
      // this.id=this.name=''
    },
    deleteItem: function (id) {
      // 用some()來循環,找到會立即中止
      // 用迴圈去找index
      this.lists.some((item, i) => {
        if (item.id == id) {
          this.lists.splice(i, 1);
          return true;
        }
      });
      // 另一種抓index的方式
      // let index = this.lists.findIndex((item) => {
      //   if (item.id == id) return true;
      // });
      // console.log(index);
      // this.splice(index. 1)
    },
  },
});
明天我們再來進行搜尋的部分。
每日一句法文有益身心:Il fait beau! --> 以.飛.ㄅㄡ ˋ! --> 天氣真好!